﻿
#ifndef __RIGHTER__
#define __RIGHTER__

////增加补充生命值道具(药品)
//enum ItemAddlife
//{
//	LF_BXD,  //补血丹
//	LF_DHD,  //大还丹
//	LF_SHD,  //守护丹
//};

class ItemStrategy;  //类前向声明

//战斗者父类
class Fighter
{
public:
	Fighter(int life, int magic, int attack) :m_life(life), m_magic(magic), m_attack(attack) {}
	virtual ~Fighter() {}

public:
	/*
	void UseItem(ItemAddlife djtype) //吃药补充生命值
	{
		if (djtype == LF_BXD) //道具类型：补血丹
		{
			m_life += 200;//补充200点生命值
			//if (主角中毒)
			//{
			//	停止中毒状态，也就是主角吃药后不再中毒
			//}
			//if (主角处于狂暴状态)
			//{
			//	m_life += 400; //额外再补充400点生命值
			//	m_magic += 200; //魔法值也再补充200点
			//}
		}
		else if (djtype == LF_DHD) //道具类型：大还丹
		{
			m_life += 300;//补充300点生命值
		}
		else if (djtype == LF_SHD) //道具类型：守护丹
		{
			m_life += 500;//补充500点生命值
		}
		//.......其他的一些判断逻辑，略。。。。。。
	}
	*/

public:
	void SetItemStrategy(ItemStrategy* strategy); //设置道具使用的策略
	void UseItem(); //使用道具
	int GetLife(); //获取人物生命值
	void SetLife(int life);  //设置人物生命值	

protected:
	int m_life;
	int m_magic;
	int m_attack;

	ItemStrategy* itemstrategy = nullptr; //C++11中支持这样初始化
};

//“战士”类，父类为Fighter
class F_Warrior :public Fighter
{
public:
	F_Warrior(int life, int magic, int attack) :Fighter(life, magic, attack) {}
};

//“法师”类，父类为Fighter
class F_Mage :public Fighter
{
public:
	F_Mage(int life, int magic, int attack) :Fighter(life, magic, attack) {}
};

#endif
